package com.lntu.meeting.common;

import com.lntu.meeting.ReserveForm.ReserveForm;

import java.util.regex.Pattern;

/**
* 杨颜泽
*  前端格式验证
*/
public class regexData {

    //数字格式正则
    private static final String NUMBER = "^[0-9]*$" ;

    //时间格式正则
    private static final String DATE = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";

    /**
    * 格式校验
    * @param : reserveForm 前端表单
    * @return :  true      符合格式
    * @return :  false     不符合格式
    */
    public static Boolean regexAllNumber (ReserveForm reserveForm){

        //房间编号
        Boolean roomNo = false;

        //开始时间
        Boolean startTime = false;

        //结束时间
        Boolean endTime = false;

        //用户编号
        Boolean userId = false;

        //开始日期
        Boolean date = false;

        //结束日期
        Boolean endDate = false;

        //是否周期预约
        Boolean lx = false;

        if (regexNumber(reserveForm.getRoomNo())){
            roomNo=true;
        }
        if (regexNumber(reserveForm.getStartTime())){
            startTime=true;
        }
        if (regexNumber(reserveForm.getEndTime())){
            endTime=true;
        }
        if (regexNumber(reserveForm.getUserId())){
            userId=true;
        }
        if(regexDate(reserveForm.getDate())){
            date=true;
        }
        if(regexDate(reserveForm.getEndDate())){
            endDate = true;
        }
        if(reserveForm.getLx() instanceof Boolean){
            lx= true;
        }

        //如果都符合格式则返回true
        if(roomNo&&startTime&&endTime&&userId&&date&&endDate&&lx){
            return true;
        }
        return false;
    }

    //数字正则
    public static Boolean regexNumber(Integer number){

        String s = number.toString();

        return Pattern.matches(NUMBER, s);
    }

    //日期正则校验
    public static Boolean regexDate(String str){

        return Pattern.matches(DATE, str);
    }

}
